home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 1999 May / maximum-cd-1999-05.iso / Canvas 6 / DATA1.CAB / English_Tutorial_Files / Viewpage / ColBez.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-11-04  |  2.7 KB  |  143 lines

  1. import java.awt.Graphics;
  2. import java.awt.Polygon;
  3. import java.awt.Rectangle;
  4. import java.io.DataInputStream;
  5. import java.io.IOException;
  6.  
  7. final class ColBez extends ColVecItm {
  8.    private static int m_tolPass = 65536;
  9.    private static int m_recurseLvl;
  10.    private static int m_x;
  11.    private static int m_y;
  12.    private static int m_a;
  13.    private static int m_b;
  14.    private static int m_b0x;
  15.    private static int m_b0y;
  16.    private static int m_b1x;
  17.    private static int m_b1y;
  18.    private static int m_b2x;
  19.    private static int m_b2y;
  20.    private static int m_b3x;
  21.    private static int m_b3y;
  22.    private static boolean m_chk;
  23.    private static float m_xOrg;
  24.    private static float m_yOrg;
  25.    private static float m_mag;
  26.  
  27.    public final void CollectBezPoints() {
  28.       m_xOrg = super.m_colGraphicObj.m_xOrg;
  29.       m_yOrg = super.m_colGraphicObj.m_yOrg;
  30.       m_mag = super.m_colGraphicObj.m_mag;
  31.  
  32.       for(int var1 = 0; var1 < super.m_numSegs; var1 += 4) {
  33.          super.m_poly.addPoint((int)((super.m_ptArryX[var1] + 0.5F - super.m_colGraphicObj.m_xOrg) * super.m_colGraphicObj.m_mag), (int)((super.m_ptArryY[var1] + 0.5F - super.m_colGraphicObj.m_yOrg) * super.m_colGraphicObj.m_mag));
  34.          if (super.m_ptArryX[var1] == super.m_ptArryX[var1 + 1] && super.m_ptArryY[var1] == super.m_ptArryY[var1 + 1] && super.m_ptArryX[var1 + 2] == super.m_ptArryX[var1 + 3] && super.m_ptArryY[var1 + 2] == super.m_ptArryY[var1 + 2]) {
  35.             super.m_poly.addPoint((int)((super.m_ptArryX[var1 + 3] + 0.5F - super.m_colGraphicObj.m_xOrg) * super.m_colGraphicObj.m_mag), (int)((super.m_ptArryY[var1 + 3] + 0.5F - super.m_colGraphicObj.m_yOrg) * super.m_colGraphicObj.m_mag));
  36.          } else {
  37.             m_b0x = (int)(super.m_ptArryX[var1] * 65536.0F);
  38.             m_b0y = (int)(super.m_ptArryY[var1] * 65536.0F);
  39.             m_b1x = (int)(super.m_ptArryX[var1 + 1] * 65536.0F);
  40.             m_b1y = (int)(super.m_ptArryY[var1 + 1] * 65536.0F);
  41.             m_b2x = (int)(super.m_ptArryX[var1 + 2] * 65536.0F);
  42.             m_b2y = (int)(super.m_ptArryY[var1 + 2] * 65536.0F);
  43.             m_b3x = (int)(super.m_ptArryX[var1 + 3] * 65536.0F);
  44.             m_b3y = (int)(super.m_ptArryY[var1 + 3] * 65536.0F);
  45.             this.TolBezierRecurs();
  46.          }
  47.       }
  48.  
  49.    }
  50.  
  51.    public ColBez(DataInputStream var1, int var2, int var3, ColGrph var4, Graphics var5) throws IOException {
  52.       super(var1, var3, var4);
  53.       super.m_itemType = var2;
  54.       super.m_numSegs = var1.readShort();
  55.       super.m_ptArryX = new float[super.m_numSegs];
  56.       super.m_ptArryY = new float[super.m_numSegs];
  57.  
  58.       for(int var6 = 0; var6 < super.m_numSegs; ++var6) {
  59.          super.m_ptArryX[var6] = (float)var1.readInt() / 65536.0F;
  60.          super.m_ptArryY[var6] = (float)var1.readInt() / 65536.0F;
  61.       }
  62.  
  63.       super.m_poly = new Polygon();
  64.       this.CollectBezPoints();
  65.       super.m_bounds.x = super.m_poly.getBoundingBox().x;
  66.       super.m_bounds.y = super.m_poly.getBoundingBox().y;
  67.       super.m_bounds.width = super.m_poly.getBoundingBox().width;
  68.       super.m_bounds.height = super.m_poly.getBoundingBox().height;
  69.    }
  70.  
  71.    public void draw(Graphics var1) {
  72.       super.m_poly = new Polygon();
  73.       this.CollectBezPoints();
  74.       ((ColVecItm)this).drawPoly(var1);
  75.    }
  76.  
  77.    public Rectangle getBounds() {
  78.       return super.m_bounds;
  79.    }
  80.  
  81.    public final void TolBezierRecurs() {
  82.       int var1 = m_b0x;
  83.       int var2 = m_b0y;
  84.       int var15 = m_b3x;
  85.       int var16 = m_b3y;
  86.       int var3 = (var1 >> 1) + (m_b1x >> 1);
  87.       int var13 = (m_b2x >> 1) + (var15 >> 1);
  88.       m_x = (m_b1x >> 1) + (m_b2x >> 1);
  89.       int var5 = (var3 >> 1) + (m_x >> 1);
  90.       int var11 = (m_x >> 1) + (var13 >> 1);
  91.       int var4 = (var2 >> 1) + (m_b1y >> 1);
  92.       int var14 = (m_b2y >> 1) + (var16 >> 1);
  93.       m_y = (m_b1y >> 1) + (m_b2y >> 1);
  94.       int var6 = (var4 >> 1) + (m_y >> 1);
  95.       int var12 = (m_y >> 1) + (var14 >> 1);
  96.       int var7 = (var5 >> 1) + (var11 >> 1);
  97.       int var8 = (var6 >> 1) + (var12 >> 1);
  98.       m_a = m_x - var7;
  99.       m_b = m_y - var8;
  100.       m_chk = true;
  101.       if ((m_a < 0 ? -m_a : m_a) <= m_tolPass && (m_b < 0 ? -m_b : m_b) <= m_tolPass) {
  102.          m_a = m_b1x - var5;
  103.          m_b = m_b1y - var6;
  104.          if ((m_a < 0 ? -m_a : m_a) <= m_tolPass && (m_b < 0 ? -m_b : m_b) <= m_tolPass) {
  105.             m_a = m_b2x - var11;
  106.             m_b = m_b2y - var12;
  107.             if ((m_a < 0 ? -m_a : m_a) <= m_tolPass && (m_b < 0 ? -m_b : m_b) <= m_tolPass) {
  108.                super.m_poly.addPoint((int)(((float)(var7 + 'ΦÇÇ' >> 16) - m_xOrg) * m_mag), (int)(((float)(var8 + 'ΦÇÇ' >> 16) - m_yOrg) * m_mag));
  109.                super.m_poly.addPoint((int)(((float)(var15 + 'ΦÇÇ' >> 16) - m_xOrg) * m_mag), (int)(((float)(var16 + 'ΦÇÇ' >> 16) - m_yOrg) * m_mag));
  110.                m_chk = false;
  111.             }
  112.          }
  113.       }
  114.  
  115.       if (m_chk) {
  116.          ++m_recurseLvl;
  117.          if (m_recurseLvl < 8) {
  118.             m_b0x = var1;
  119.             m_b0y = var2;
  120.             m_b1x = var3;
  121.             m_b1y = var4;
  122.             m_b2x = var5;
  123.             m_b2y = var6;
  124.             m_b3x = var7;
  125.             m_b3y = var8;
  126.             this.TolBezierRecurs();
  127.             m_b0x = var7;
  128.             m_b0y = var8;
  129.             m_b1x = var11;
  130.             m_b1y = var12;
  131.             m_b2x = var13;
  132.             m_b2y = var14;
  133.             m_b3x = var15;
  134.             m_b3y = var16;
  135.             this.TolBezierRecurs();
  136.          }
  137.  
  138.          m_recurseLvl += -1;
  139.       }
  140.  
  141.    }
  142. }
  143.